访问电脑版页面

导航:老古开发网手机版51单片机51单片机键盘按键

51单片机独立按键与矩阵按键的工作原理

导读:
关键字:
独立按键,矩阵按键,51单片机,

独立按键

首先既然是检测输入,对于当然要用到拉电阻,来检测引脚电平变化变化。51单片机中,除了P0口外,P2,P3,P4都是内置上拉电阻的准双向IO口,一般 的 51 P0引脚都外接了上拉电阻,当然也可以用作输入口。

作为输入前需要拉为高电平。当有按键按下,致使单片机的某个引脚接地,变为低电平时,我们就认为这个按键按下了。当按键松开后,由于输入不会锁存,所以此时拉高的引脚回归到高电平。

独立按键的内部原理。

独立按键的4个引脚中,两两为一组。每一组的2个引脚是连在一起的,当按键按键时,2个组又连接了,也就是4个脚都连接一起了。

51单片机独立按键与矩阵按键的工作原理

按键的很重要注意点就是消除抖动,消抖。因为人按下按键不是并瞬间到位的,按键在按下的过程中会有抖动。我们需要通过延时来让单片机绕过抖动的时间。

51单片机独立按键与矩阵按键的工作原理

下面是一个用按键作为开关间接控制LED的demo。

注:下图中P2.0连接的按键应该再接一个电阻,我疏忽忘记画出来了。

51单片机独立按键与矩阵按键的工作原理

/***************************************按键按下,LED亮,松开,LED熄灭**************************************/#includetypedefunsignedintuint;typedefunsignedcharuchar;sbitbutton=P2^0;//按键输入引脚sbitled=P0^0;//LED控制输出引脚/***************************/voiddelay(uintt);ucharisKeyPressed(void);/***************************/voidmain(void){button=1;//P2是准IO口,作为输入前要写1led=1;while(1){if(isKeyPressed()){led=0;delay(100);led=1;}}}ucharisKeyPressed(void){ucharisPressed=0;//是否按下标志位ucharc=50;if(button==0)//初次检测{delay(5);//消抖延时if(button==0)//再次验证{isPressed=1;while(isPressed==0&&c--)//如果不用c作为计数器,那么一直按着按键的话,程序就会一直在这里循环。是否要用c需要根据自己的要求。;}}returnisPressed;}voiddelay(uintt){uinTI;ucharj;for(i=t;i》0;i--)for(j=110;j》0;j--);}

矩阵按键

矩阵按键的检测方式有多种,最常用的就是行列式扫描检测。原理和独立按键是一样的,只不过我们要扫描一组按键,找出那个被按下的而已。

对行列式扫描的分析。

假如我们按下了按键S6,现在来检测它。

用红色表示1高电平,蓝色表示0低电平。

先给键盘连接的GPIO口赋值为0XF0。

51单片机独立按键与矩阵按键的工作原理

电平反转。

51单片机独立按键与矩阵按键的工作原理

这样就可以判断定了按键的坐标。

demo的连线图。

51单片机独立按键与矩阵按键的工作原理

来源:工程师周亮   作者:lhl545545  2019/1/2 15:46:00
栏目: [ 51单片机键盘按键]

相关阅读

89C2051单片机在键盘显示装置中的应用

51单片机对矩阵键盘实现16个按键操作的电路设计

51单片机按键检测的实现方法及功能解析

51单片机矩阵式键盘的编程方法

51单片机 按键,键盘检测

51单片机键盘扫描程序解析

51单片机4个I/O口实现16个键盘原理的设计

AT89S51单片机对4×4矩阵键盘的控制设计

AT89S51单片机按键识别的过程和方法

51单片机对4x4矩阵按键的驱动设计

51单片机之矩阵键盘的驱动实现

基于51单片机的矩阵键盘程序设计

51单片机矩阵键盘与8051连接设计

51单片机 矩阵按键的扫描、消抖、动作分离

51单片机对PS2键盘的控制设计

C51单片机矩阵键盘扫描去抖程序

基于单片机89C51的异步串行接口键盘设计

干货!8051单片机的反转法扫描键盘

三分钟让你掌握51单片机的4×4键盘识别与74LS164驱动数码显示

51单片机按键检测的方法解析